home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / rsync_modules.nasl < prev    next >
Text File  |  2005-01-14  |  3KB  |  107 lines

  1. #
  2. #
  3. # This script is (C) 2003 Renaud Deraison
  4. #
  5. #
  6.  
  7. if (description)
  8. {
  9.  script_id(11389);
  10. #script_cve_id("CVE-MAP-NOMATCH");
  11.  
  12.  script_version ("$Revision: 1.7 $");
  13.  script_name(english:"rsync modules");
  14.  desc["english"] = "
  15. This plugin extracts the rsync modules available on the remote
  16. host.
  17.  
  18. Risk factor : None";
  19.  
  20.  
  21.  script_description(english:desc["english"]);
  22.  script_summary(english:"Shows the remotely accessible rsync modules");
  23.  script_category(ACT_GATHER_INFO);
  24.  script_family(english:"Gain root remotely");
  25.  script_copyright(english:"This script is Copyright (C) 2003 Renaud Deraison");
  26.  script_dependencies("find_service.nes");
  27.  script_require_ports("Services/rsync", 873);
  28.  exit(0);
  29. }
  30.  
  31. function rsync_init(port, motd)
  32. {
  33.  local_var soc, r, q, i;
  34.   
  35.  soc = open_sock_tcp(port);
  36.  if(!soc)return NULL;
  37.  r = recv_line(socket:soc, length:4096);
  38.  if(motd) q = recv(socket:soc,length:strlen(motd), min:strlen(motd));
  39.  send(socket:soc, data:r);
  40.  return soc;
  41. }
  42.  
  43. port = get_kb_item("Services/rsync");
  44. if(!port)port = 873;
  45. if(!get_port_state(port))exit(0);
  46.  
  47. soc = open_sock_tcp(port);
  48. if(!soc)exit(0);
  49.  
  50. welcome = recv_line(socket:soc, length:4096);
  51. send(socket:soc, data:string("@BOGUS\n"));
  52. if(!welcome)exit(0);
  53. motd = NULL;
  54.  
  55. set_kb_item(name:"rsync/" + port + "/banner", value:welcome);
  56.  
  57. for(i=0;i<1024;i++)
  58. {
  59.  r = recv_line(socket:soc, length:4096);
  60.  if(!strlen(r) || "@ERROR" >< r)break;
  61.  else motd += r;
  62. close(soc);
  63.  
  64. soc = rsync_init(port:port, motd:motd);
  65. send(socket:soc, data:string("#list\r\n"));
  66.  
  67. modules = NULL;
  68.  
  69.  
  70. for(i=0;i<255;i++)
  71. {
  72.  r = recv_line(socket:soc, length:4096);
  73.  if(!r || "@RSYNC" >< r)break;
  74.  modules += r;
  75. }
  76.  
  77. close(soc);
  78.  
  79. if (modules != NULL )
  80. {
  81.   d = NULL;
  82.   foreach module (split(modules))
  83.   {
  84.    m = split(module, sep:" ");
  85.    soc = rsync_init(port:port, motd:motd);
  86.    if(soc)
  87.    {
  88.     send(socket:soc, data:string(m[0]  - " ", "\r\n"));
  89.     r = recv_line(socket:soc, length:4096);
  90.     if("@RSYNCD: OK" >< r)d += (module  - string("\n") ) + string(" (readable by anyone)\n");
  91.     else d += (module - string("\n")) + string(" (authentication required)\n");
  92.     close(soc);
  93.    }
  94.   }
  95.  
  96.  report = NULL;
  97.  
  98.  if( motd != NULL )report = string(". The MOTD banner of the remote rsync server is :\n", motd, "\n");
  99.  
  100.  report += string(". The following rsync modules are available on the remote host :\n\n",
  101.  d, 
  102.  "\nMake sure that only the relevant persons have access to them\n");
  103.  if("(readable by anyone)" >< report) security_hole(port:port, data:report);
  104.  else security_warning(port:port, data:report);
  105. }
  106.